package com.mm.cloud.lease.dto.income.form;

import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import com.mm.cloud.lease.dto.tenant.form.item.TenantOtherDepositItemDTO;
import com.mm.cloud.lease.dto.tenant.form.item.TenantOtherFeeItemDTO;

/**
 * 生成租客账单请求DTO
 * 说明：
 * 1. DTO 必须实现序列化
 * 2. 仅承载生成账单所需的关键参数
 */
@Data
public class GenerateTenantIncomeDTO implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /** 租赁开始时间（若为空则以租客资料为准） */
    private LocalDateTime leaseStartTime;

    /** 租赁结束时间（若为空则以租客资料为准） */
    private LocalDateTime leaseEndTime;

    /** 缴费方式：1-月付 2-二月付 3-季付 6-半年付 12-年付 99-全额支付（若为空则以租客资料为准） */
    private Byte paymentMethod;

    /** 每期租金（若为空则以租客资料为准） */
    private BigDecimal leasePrice;

    /** 提前付租天数（用于计算应付日期，若为空以租客资料为准） */
    private Integer paymentAdvanceDay;

    /** 房租押金（未登记预览时可传；为空则以租客资料为准） */
    private BigDecimal depositPrice;

    /** 其他押金（未登记预览时可传；为空则以租客资料或空集合） */
    private List<TenantOtherDepositItemDTO> otherDepositList;

    /** 其他费用（未登记预览时可传；为空则以租客资料或空集合） */
    private List<TenantOtherFeeItemDTO> otherFeeList;
}


